Una de las mejoras más interesantes de kotlin está la relacionada con la interfaz del reloj. Con el fin de conocer mejor este aspecto puedes tomar un curso de Kotlin.
La interfaz del reloj proporciona una API general para medir intervalos de tiempo. MonoClock es un objeto que implementa Clock; Proporciona la fuente predeterminada de tiempo monótono en diferentes plataformas.
Al usar la interfaz del Reloj, marcas explícitamente el inicio de la hora de acción, y más tarde el tiempo transcurrido desde el punto de inicio. Es especialmente conveniente si deseas comenzar y finalizar el tiempo de medición desde diferentes funciones:
import kotlin.time.* @UseExperimental(ExperimentalTime::class)fun main() { val clock = MonoClock val mark = clock.markNow() // might be inside the first function Thread.sleep(10) // action println(mark.elapsedNow()) // might be inside the second function}
La función measureTimedValue te permite medir la duración de una acción determinada y obtener su resultado junto con la duración del intervalo de tiempo transcurrido. Mide el tiempo transcurrido con MonoClock.
import kotlin.time.* @UseExperimental(ExperimentalTime::class)fun main() { val (value, duration) = measureTimedValue { Thread.sleep(100) 42 } println(value) // 42 println(duration) // e.g. 103 ms}
Para obtener más detalles sobre la implementación de la clase Duration y los detalles de las implementaciones Clockinterface y MonoClock para diferentes plataformas, consulta el KEEP correspondiente. Ten en cuenta que esta API es experimental y está sujeta a cambios en función de los comentarios que los usuarios mencionen.
Funciones para la manipulación de bits.
La biblioteca estándar ahora contiene una API para la manipulación de bits (como de costumbre, en el estado experimental inicialmente):
@UseExperimental(ExperimentalStdlibApi::class)fun main() { val number = "1010000".toInt(radix = 2) println(number.countOneBits()) println(number.countTrailingZeroBits()) println(number.takeHighestOneBit().toString(2)) println(number.rotateRight(3).toString(2)) println(number.rotateLeft(3).toString(2))}
Ten en cuenta que se han agregado funciones de extensión similares para Int, Long, Short, Byte y sus equivalentes sin firmar.
En las siguientes notas hablaremos más de este tema. Por el momento puedes tomar un curso de PHP y otro curso de Excel.